CREATE PROCEDURE [dbo].[amsp_GetTaggedPage]
@TPLID NUMERIC,
@LstInterestCategoryID VARCHAR(1000),
@TPPID NUMERIC,
@HideMemberOnlyFlag NUMERIC,
@ExtraURLVar VARCHAR(1000),
@ContactID NUMERIC = 0,
@TPOperator CHAR(1) = 'A'
AS
SET NOCOUNT ON
BEGIN
DECLARE
@SQL nVARCHAR(4000),
@TempVar VARCHAR(100),
@TempList VARCHAR(1000),
@StringPtr INT,
@LastStringPtr INT,
@TaggedSectionID NUMERIC,
@TaggedPagePortletID NUMERIC,
@ComponentCode CHAR(2),
@MaxRows NUMERIC,
@PrimarySort VARCHAR(50),
@PrimarySortAscDescInd CHAR(1),
@SecondarySort VARCHAR(50),
@SecondarySortAscDescInd CHAR(1),
@OrderNum NUMERIC,
@SQLNumber NUMERIC,
@RangeColumn VARCHAR(50),
@ColumnType VARCHAR(10),
@RangeFrom VARCHAR(25),
@RangeTo VARCHAR(25),
@TempStr1 VARCHAR(1000),
@TempStr2 VARCHAR(1000),
@UserDefinedDate1 VARCHAR(50),
@CurrentDate VARCHAR(10),
@EcmFlag bit
DECLARE @DEBUG Datetime
DECLARE @tmpSQL nvarchar(2000)
DECLARE @SQLString nvarchar(4000)
IF OBJECT_ID('Press_Release') IS NULL
SET @EcmFlag = 1
ELSE
SET @EcmFlag = 0
SELECT TPS.TaggedSectionID, TPP.TaggedPagePortletID, TT.ComponentCode, TT.SQLNumber, TPP.MaxRows, TPP.PrimarySort, TPP.PrimarySortAscDescInd,
TPP.SecondarySort, TPP.SecondarySortAscDescInd, TPP.OrderNum, TPP.UseOR, TPP.RangeFrom, TPP.RangeTo, TPP.RangeColumn,
TPCC.ColumnType
INTO [#TempTPP]
FROM Tagged_Page_Section AS TPS WITH (UPDLOCK) INNER JOIN
Tagged_Page_Portlet AS TPP WITH (UPDLOCK) ON TPS.TaggedPageSectionID = TPP.TaggedPageSectionID INNER JOIN
Tagged_Portlet AS TP WITH (UPDLOCK) ON TPP.TaggedPortletID = TP.TaggedPortletID INNER JOIN
Tagged_Template AS TT WITH (UPDLOCK) ON TP.TaggedTemplateID = TT.TaggedTemplateID LEFT OUTER JOIN
Tagged_Page_Component_Column AS TPCC WITH (UPDLOCK) ON TT.ComponentCode = TPCC.ComponentCode AND
TPP.RangeColumn = TPCC.ColumnName
WHERE (TPS.TaggedPageLayoutID = @TPLID)
IF @TPPID <> 0
BEGIN
DELETE FROM #TempTPP WITH (UPDLOCK)
WHERE TaggedPagePortletID <> @TPPID
END
CREATE TABLE #TempCIC
(
TaggedPagePortletID NUMERIC,
UseOR CHAR(1),
ComponentCode CHAR(2),
ComponentID NUMERIC,
InterestCategoryID NUMERIC
)
SET @TempList = @LstInterestCategoryID + ','
SET @LastStringPtr = 1
SET @StringPtr = CHARINDEX(',', @TempList, @LastStringPtr)
IF SUBSTRING(@TempList, @LastStringPtr, @StringPtr - @LastStringPtr) = 0
BEGIN
INSERT INTO #TempCIC
(TaggedPagePortletID, UseOR, ComponentCode, ComponentID, InterestCategoryID)
SELECT TPP.TaggedPagePortletID, TPP.UseOR, CIC.ComponentCode, CIC.ComponentID, CIC.InterestCategoryID
FROM #TempTPP TPP WITH (UPDLOCK) LEFT OUTER JOIN Tagged_Page_PortletIC TPPIC WITH (UPDLOCK) ON TPP.TaggedPagePortletID = TPPIC.TaggedPagePortletID,
Component_Interest_Category CIC WITH (UPDLOCK)
WHERE TPP.ComponentCode = CIC.ComponentCode
AND (CIC.InterestCategoryID = TPPIC.InterestCategoryID
OR TPPIC.InterestCategoryID IS NULL)
AND (CIC.ComponentCode = 'CM'
AND EXISTS (SELECT TOP 1 1
FROM Content C WITH (UPDLOCK)
WHERE C.ContentID = CIC.ComponentID
AND C.WorkflowStatusCode = 'P'))
END
ELSE IF @TPOperator = 'U'
BEGIN
INSERT INTO #TempCIC
(TaggedPagePortletID, UseOR, ComponentCode, ComponentID, InterestCategoryID)
SELECT TPP.TaggedPagePortletID, TPP.UseOR,
CIC.ComponentCode, CIC.ComponentID, CIC.InterestCategoryID
FROM #TempTPP TPP WITH (UPDLOCK), Component_Interest_Category CIC WITH (UPDLOCK)
WHERE TPP.ComponentCode = CIC.ComponentCode
AND CIC.InterestCategoryID IN (SELECT CIC2.InterestCategoryID
FROM Contact_Interest_Category CIC2 WITH (UPDLOCK)
WHERE CIC2.ContactID = @ContactID)
END
ELSE
BEGIN
IF @TPOperator = 'O'
BEGIN
INSERT INTO #TempCIC
(TaggedPagePortletID, UseOR, ComponentCode, ComponentID, InterestCategoryID)
SELECT TPP.TaggedPagePortletID, TPP.UseOR,
CIC.ComponentCode, CIC.ComponentID, CIC.InterestCategoryID
FROM #TempTPP TPP WITH (UPDLOCK), Component_Interest_Category CIC WITH (UPDLOCK)
WHERE TPP.ComponentCode = CIC.ComponentCode
AND CIC.ComponentID IN (SELECT CIC2.ComponentID
FROM Component_Interest_Category CIC2 WITH (UPDLOCK)
WHERE CIC2.ComponentCode = CIC.ComponentCode
AND CIC2.InterestCategoryID = SUBSTRING(@TempList, @LastStringPtr, @StringPtr - @LastStringPtr))
SET @LastStringPtr = @StringPtr + 1
SET @StringPtr = CHARINDEX(',', @TempList, @LastStringPtr)
WHILE @StringPtr > 0
BEGIN
INSERT INTO #TempCIC
(TaggedPagePortletID, UseOR, ComponentCode, ComponentID, InterestCategoryID)
SELECT TPP.TaggedPagePortletID, TPP.UseOR,
CIC.ComponentCode, CIC.ComponentID, CIC.InterestCategoryID
FROM #TempTPP TPP WITH (UPDLOCK), Component_Interest_Category CIC WITH (UPDLOCK)
WHERE TPP.ComponentCode = CIC.ComponentCode
AND CIC.ComponentID IN (SELECT CIC2.ComponentID
FROM Component_Interest_Category CIC2
WHERE CIC2.ComponentCode = CIC.ComponentCode
AND CIC2.InterestCategoryID = SUBSTRING(@TempList, @LastStringPtr, @StringPtr - @LastStringPtr))
AND CIC.ComponentID NOT IN (SELECT T2.ComponentID
FROM #TempCIC T2 WITH (UPDLOCK)
WHERE T2.ComponentCode = CIC.ComponentCode
AND T2.InterestCategoryID = SUBSTRING(@TempList, @LastStringPtr, @StringPtr - @LastStringPtr))
SET @LastStringPtr = @StringPtr + 1
SET @StringPtr = CHARINDEX(',', @TempList, @LastStringPtr)
END
END
ELSE
BEGIN
INSERT INTO #TempCIC
(TaggedPagePortletID, UseOR, ComponentCode, ComponentID, InterestCategoryID)
SELECT TPP.TaggedPagePortletID, TPP.UseOR,
CIC.ComponentCode, CIC.ComponentID, CIC.InterestCategoryID
FROM #TempTPP TPP WITH (UPDLOCK), Component_Interest_Category CIC WITH (UPDLOCK)
WHERE TPP.ComponentCode = CIC.ComponentCode
AND CIC.ComponentID IN (SELECT CIC2.ComponentID
FROM Component_Interest_Category CIC2 WITH (UPDLOCK)
WHERE CIC2.ComponentCode = CIC.ComponentCode
AND CIC2.InterestCategoryID = SUBSTRING(@TempList, @LastStringPtr, @StringPtr - @LastStringPtr))
SET @LastStringPtr = @StringPtr + 1
SET @StringPtr = CHARINDEX(',', @TempList, @LastStringPtr)
WHILE @StringPtr > 0
BEGIN
DELETE #TempCIC
WHERE ComponentID NOT IN (SELECT CIC.ComponentID
FROM Component_Interest_Category CIC WITH (UPDLOCK)
WHERE CIC.ComponentCode = #TempCIC.ComponentCode
AND CIC.InterestCategoryID = SUBSTRING(@TempList, @LastStringPtr, @StringPtr - @LastStringPtr))
SET @LastStringPtr = @StringPtr + 1
SET @StringPtr = CHARINDEX(',', @TempList, @LastStringPtr)
END
END
END
SET @UserDefinedDate1 = ''
SET @TempList = @ExtraURLVar + '&'
SET @LastStringPtr = 1
SET @StringPtr = CHARINDEX('&', @TempList, @LastStringPtr)
WHILE @StringPtr > 0
BEGIN
SET @TempVar = SUBSTRING(@TempList, @LastStringPtr, @StringPtr - @LastStringPtr)
IF (CHARINDEX('=',@TempVar) != 0 AND UPPER(SUBSTRING(@TempVar,1,CHARINDEX('=',@TempVar)-1)) = 'USERDEFINEDDATE1')
SET @UserDefinedDate1 = SUBSTRING(@TempVar,CHARINDEX('=',@TempVar)+1,LEN(@TempVar)-CHARINDEX('=',@TempVar))
SET @LastStringPtr = @StringPtr + 1
SET @StringPtr = CHARINDEX(',', @TempList, @LastStringPtr)
END
DELETE #TempCIC
WHERE NOT Exists (SELECT *
FROM Tagged_Page_PortletIC TPPIC WITH (UPDLOCK)
WHERE TPPIC.InterestCategoryID = #TempCIC.InterestCategoryID
AND TPPIC.TaggedPagePortletID = #TempCIC.TaggedPagePortletID)
AND EXISTS (SELECT *
FROM Tagged_Page_PortletIC TPPIC2 WITH (UPDLOCK)
WHERE TPPIC2.TaggedPagePortletID = #TempCIC.TaggedPagePortletID)
SELECT TaggedPagePortletID, ComponentID, ComponentCode
INTO #TempCIC2
FROM #TempCIC WITH (UPDLOCK)
GROUP BY TaggedPagePortletID, ComponentID, ComponentCode
HAVING Count(*) = (SELECT Count(*)
FROM Tagged_Page_PortletIC TPPIC WITH (UPDLOCK)
WHERE TPPIC.TaggedPagePortletID = #TempCIC.TaggedPagePortletID)
DELETE #TempCIC
WHERE NOT EXISTS (SELECT *
FROM #TempCIC2 T2 WITH (UPDLOCK)
WHERE T2.TaggedPagePortletID = #TempCIC.TaggedPagePortletID
AND T2.ComponentID = #TempCIC.ComponentID
AND T2.ComponentCode = #TempCIC.ComponentCode)
AND UseOR = 'N'
AND EXISTS (SELECT *
FROM Tagged_Page_PortletIC TPPIC2 WITH (UPDLOCK)
WHERE TPPIC2.TaggedPagePortletID = #TempCIC.TaggedPagePortletID)
SELECT DISTINCT TaggedPagePortletID, ComponentCode, ComponentID
INTO #Temp
FROM #TempCIC WITH (UPDLOCK)
SET @DEBUG=GETDATE()
DECLARE c_TPP CURSOR FAST_FORWARD FOR
SELECT TPP.TaggedSectionID,
TPP.TaggedPagePortletID,
TPP.ComponentCode,
TPP.MaxRows,
TPP.PrimarySort,
TPP.PrimarySortAscDescInd,
TPP.SecondarySort,
TPP.SecondarySortAscDescInd,
TPP.OrderNum,
TPP.SQLNumber,
TPP.RangeFrom,
TPP.RangeTo,
TPP.RangeColumn,
TPP.ColumnType
FROM #TempTPP TPP WITH (NOLOCK)
ORDER BY TPP.TaggedSectionID, TPP.OrderNum
SET @CurrentDate = CONVERT(VARCHAR(2),MONTH(CURRENT_TIMESTAMP))+'/'+CONVERT(VARCHAR(2),DAY(CURRENT_TIMESTAMP))+'/'+CONVERT(VARCHAR(4),Year(CURRENT_TIMESTAMP))
OPEN c_TPP
WHILE (1 = 1)
BEGIN
FETCH NEXT FROM c_TPP INTO
@TaggedSectionID,
@TaggedPagePortletID,
@ComponentCode,
@MaxRows,
@PrimarySort,
@PrimarySortAscDescInd,
@SecondarySort,
@SecondarySortAscDescInd,
@OrderNum,
@SQLNumber,
@RangeFrom,
@RangeTo,
@RangeColumn,
@ColumnType
IF @@Fetch_Status <> 0
BREAK
SET @SQL = 'SELECT'
IF (@TPPID = 0 AND @MaxRows IS NOT NULL)
SET @SQL = @SQL + ' TOP ' + CONVERT(VARCHAR(10),@MaxRows)
ELSE
SET @MaxRows = 10000
SET @TempStr1 = ''
SET @TempStr2 = ''
IF @RangeColumn IS NOT NULL
BEGIN
IF @ColumnType = 'Date'
BEGIN
IF @RangeFrom IS NOT NULL
BEGIN
IF ISDATE(@RangeFrom) = 1
BEGIN
SET @TempStr1 = ' AND ' + @RangeColumn + ' >= ''' + @RangeFrom + ''''
SET @TempStr2 = ' AND ' + @RangeColumn + ' >= ''' + @RangeFrom + ''''
END
ELSE IF ISNUMERIC(@RangeFrom) = 1
BEGIN
SET @TempStr1 = ' AND ' + @RangeColumn + ' >= DATEADD(d,' + @RangeFrom + ',''' + @CurrentDate + ''')'
SET @TempStr2 = ' AND ' + @RangeColumn + ' >= DATEADD(d,' + @RangeFrom + ',''' + @CurrentDate + ''')'
END
END
IF @RangeTo IS NOT NULL
BEGIN
IF ISDATE(@RangeTo) = 1
BEGIN
SET @TempStr1 = @TempStr1 + ' AND ' + @RangeColumn + ' <= ''' + @RangeTo + ' 23:59:59'''
SET @TempStr2 = @TempStr2 + ' AND ' + @RangeColumn + ' <= ''' + @RangeTo + ' 23:59:59'''
END
ELSE IF ISNUMERIC(@RangeTo) = 1
BEGIN
SET @TempStr1 = @TempStr1 + ' AND ' + @RangeColumn + ' <= DATEADD(d,' + @RangeTo + ',''' + @CurrentDate + ' 23:59:59'')'
SET @TempStr2 = @TempStr2 + ' AND ' + @RangeColumn + ' <= DATEADD(d,' + @RangeTo + ',''' + @CurrentDate + ' 23:59:59'')'
END
END
END
ELSE IF @ColumnType = 'Numeric'
BEGIN
IF @RangeFrom IS NOT NULL AND ISNUMERIC(@RangeFrom) = 1
BEGIN
SET @TempStr1 = ' AND ' + @RangeColumn + ' >= ' + @RangeFrom
SET @TempStr2 = ' AND ' + @RangeColumn + ' >= ' + @RangeFrom
END
IF @RangeTo IS NOT NULL AND ISNUMERIC(@RangeTo) = 1
BEGIN
SET @TempStr1 = @TempStr1 + ' AND ' + @RangeColumn + ' <= ' + @RangeTo
SET @TempStr2 = @TempStr2 + ' AND ' + @RangeColumn + ' <= ' + @RangeTo
END
END
ELSE
BEGIN
IF @RangeFrom IS NOT NULL
BEGIN
SET @TempStr1 = ' AND ' + @RangeColumn + ' >= ''' + @RangeFrom + ''''
SET @TempStr2 = ' AND ' + @RangeColumn + ' >= ''' + @RangeFrom + ''''
END
IF @RangeTo IS NOT NULL
BEGIN
SET @TempStr1 = @TempStr1 + ' AND ' + @RangeColumn + ' <= ''' + @RangeTo + ''''
SET @TempStr2 = @TempStr2 + ' AND ' + @RangeColumn + ' <= ''' + @RangeTo + ''''
END
END
END
IF @ComponentCode = 'CM'
BEGIN
IF @HideMemberOnlyFlag = 1
SET @TempVar = '(''N'','''')'
ELSE
SET @TempVar = '(''N'',''Y'','''')'
IF @UserDefinedDate1 != ''
BEGIN
SET @TempStr1 = @TempStr1 + ' AND C.UserDefinedDate1 = ''' + @UserDefinedDate1 + ''''
SET @TempStr2 = @TempStr2 + ' AND C2.UserDefinedDate1 = ''' + @UserDefinedDate1 + ''''
END
SET @tmpSQL='
DECLARE @Flag INT
SELECT @Flag= (CASE
WHEN Count(*) > ' + CONVERT(VARCHAR(10),@MaxRows) + ' THEN 1
ELSE 0 END)
FROM #Temp T2 WITH (UPDLOCK, FASTFIRSTROW)
JOIN vContent_TemplatePath C2 on T2.ComponentID = C2.ContentID
WHERE
ISNULL(C2.MembersOnlyFlag,''N'') IN ' + @TempVar + '
AND T2.TaggedPagePortletID = ' + CONVERT(VARCHAR(10),@TaggedPagePortletID) + @TempStr2 + ' '
SET @SQL = @SQL + ' ' + CONVERT(VARCHAR(10),@TaggedSectionID) + ' TaggedSectionID, '
+ CONVERT(VARCHAR(10),@TaggedPagePortletID) + ' TaggedPagePortletID,
C.*, C.TemplatePath, @Flag as MoreFlag
FROM #Temp T WITH (UPDLOCK, FASTFIRSTROW)
Join vContent_TemplatePath C on T.ComponentID = C.ContentID
WHERE
ISNULL(C.MembersOnlyFlag,''N'') IN ' + @TempVar + '
AND
T.TaggedPagePortletID = ' + CONVERT(VARCHAR(10),@TaggedPagePortletID)
+ @TempStr1
END
ELSE IF @ComponentCode = 'CC'
BEGIN
SET @SQL = @SQL + ' ' + CONVERT(VARCHAR(10),@TaggedSectionID) + ' TaggedSectionID, '
+ CONVERT(VARCHAR(10),@TaggedPagePortletID) + ' TaggedPagePortletID,
0 MoreFlag'
END
IF @PrimarySort IS NOT NULL
BEGIN
SET @SQL = @SQL + ' ORDER BY ' + @PrimarySort
IF @PrimarySortAscDescInd = 'D'
SET @SQL = @SQL + ' DESC'
ELSE
SET @SQL = @SQL + ' ASC'
IF @SecondarySort IS NOT NULL
BEGIN
SET @SQL = @SQL + ', ' + @SecondarySort
IF @SecondarySortAscDescInd = 'D'
SET @SQL = @SQL + ' DESC'
ELSE
SET @SQL = @SQL + ' ASC'
END
END
SEt @DEBUG=Getdate()
set @SQLString=@tmpSQL + @SQL
EXECUTE sp_executesql @SQLString
END
CLOSE c_TPP
DEALLOCATE c_TPP
END
GO
GRANT EXECUTE ON [dbo].[amsp_GetTaggedPage] TO [IMIS]
GO